/*
 * Copyright 2011 John Alström
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package se.elva.slticket.dialog;

import se.elva.slticket.R;
import se.elva.slticket.repository.SavedStates;
import android.app.Dialog;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;

public class SetNewPasswordDialog extends Dialog {

	private EditText newPasswordEditText;
	private EditText newPasswordConfirmEditText;
	private Context context;
	private Button okButton;
	private Button cancelButton;
	
	public SetNewPasswordDialog(Context context) {
		super(context);
		this.context = context;
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		LayoutInflater factory = LayoutInflater.from(context);
		final View textEntryView = factory.inflate(
				R.layout.new_password_dialog, null);

		this.setContentView(textEntryView);
		addPasswordEditText();
		
		addNewPasswordConfirmEditText();
		addOkButton();
		addCancelButton();
		cancelButton.setOnClickListener(onCancelListener);

	}

	android.view.View.OnClickListener onCancelListener = new android.view.View.OnClickListener() {
		public void onClick(View v) {
			cancel();
		}

	};

	android.view.View.OnClickListener onOkListener = new android.view.View.OnClickListener() {
		public void onClick(View v) {
			if(isConfirmedPasswordSameAsNew() && !newPasswordEditText.getText().toString().equals("")){
				new SavedStates(context).savePassword(newPasswordConfirmEditText.getText().toString());
				cancel();
			}
		}

	};
	
	private boolean isConfirmedPasswordSameAsNew(){
		return newPasswordEditText.getText().toString().equals(newPasswordConfirmEditText.getText().toString());
	}
	
	private void checkPassword() {
		if (isConfirmedPasswordSameAsNew() && !newPasswordEditText.getText().toString().equals("")) {
			newPasswordConfirmEditText
					.setBackgroundResource(R.drawable.greenedittext_background);
		} else {
			newPasswordConfirmEditText
					.setBackgroundResource(R.drawable.rededittext_background);

		}
	}

	TextWatcher watcher = new TextWatcher() {
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			checkPassword();
		}

		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
		}

		public void afterTextChanged(Editable s) {

		}
	};
	
	private void addPasswordEditText(){
		this.newPasswordEditText = (EditText)findViewById(R.id.newPassword);
	}
	
	private void addNewPasswordConfirmEditText(){
		this.newPasswordConfirmEditText = (EditText)findViewById(R.id.confirmNewPassword);
		this.newPasswordConfirmEditText.addTextChangedListener(watcher);
	}

	private void addOkButton() {
		this.okButton = (Button) findViewById(R.id.ok);
		this.okButton.setOnClickListener(onOkListener);
		
	}

	public Button getOkButton() {
		return this.okButton;
	}

	private void addCancelButton() {
		this.cancelButton = (Button) findViewById(R.id.cancel);
	}

	public Button getCancekButton() {
		return this.cancelButton;
	}
	


}
